package account.model;

import java.util.*;

import javax.swing.JOptionPane;

import dao.account.DataLayerAccount;

public class SubTeam extends Observable {

	private ArrayList<Account> gebruikers;
	private Account loggedIn;

	private static SubTeam instance;

	DataLayerAccount dl = new DataLayerAccount();

	public static SubTeam getInstance() {
		if(instance == null){
			instance = new SubTeam();
		}
		return instance;
	}

	private SubTeam() {
		gebruikers = new ArrayList<>();
	}

	//voeg accounts toe aan arraylist
	public void addAccount(Account acc){
		gebruikers.add(acc);
	}
	
	//laden van accounts uit database
	public void loadAccounts(){
		dl.openConn();
		dl.loadAccounts();
		dl.closeConn();		
	}

	//laden van studentengegevens
	public void loadStudent(){
		dl.openConn();
		dl.loadStudent();
		dl.closeConn();
	}

	//gegevens controleren tijdens inloggen
	public boolean checkAccount(Account a){
		Iterator<Account> iter = gebruikers.iterator();		
		Account selectedAcc;		

		while(iter.hasNext()){
			selectedAcc = iter.next();	
			
			for(int i = 0; i < gebruikers.size(); i++)
				if(((Account) a).getGebruikersnaam().equals(gebruikers.get(i).getGebruikersnaam())&&
						((Account) a).getWachtwoord().equals(gebruikers.get(i).getWachtwoord())) {		
					loggedIn = gebruikers.get(i);
					return true;
				}
		}
		return false;
	}

	// account bijwerken in de arraylist
	public void updateSubTeam(){
		Iterator<Account> iter = gebruikers.iterator();
		int i = 0;
		while(iter.hasNext()){			
			if(loggedIn.equals(gebruikers.get(i))){
				gebruikers.remove(i);
				gebruikers.add(i, loggedIn);
				setChanged();
				notifyObservers(loggedIn);				
				break;
			}
			i++;
		}		
	}

	public Account getAcc() {
		return loggedIn;
	}

	public void setAcc(Account acc) {
		this.loggedIn = acc;
	}
	
}
